home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / dev / misc / amul900.lha / Updates.AMUL880 < prev    next >
Encoding:
Text File  |  1992-05-04  |  27.0 KB  |  773 lines

  1. = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  2.  
  3.       ==================================================================
  4.       ==±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±==
  5.       ==±±±±####±±±±###±±±±±###±±###±±±###±####±±±±±±±±±±±          ±±==
  6.       ==±±±##°°##±±°°###±±±###±±°##±±±°°##°°##±±±±±±±±±±±± Amiga    ±±==
  7.       ==±±##±±°°##±±°#########±±°##±±±±°##±°##±±±±±±±±±±±± Multi-   ±±==
  8.       ==±°##±±±°##±±°#########±±°##±±±±°##±°##±±±±±±±±±±±± User     ±±==
  9.       ==±°########±±°##°###°##±±°##±±±±°##±°##±±±±±±±±±±±±  games   ±±==
  10.       ==±°##°°°°##±±°##°°°±°##±±°°##±±±##±±°##±±±±±#±±±±±± Language ±±==
  11.       ==±°###±±###±±####±±±####±±°#######±±#########±±±±±±          ±±==
  12.       ==±°°°±±°°°±±°°°°±±±°°°°±±±°°°°°°°±±°°°°°°°°°±±±±±±±±±±±±±±±±±±±==
  13.       ==±============================================================±==
  14.       ==±=           Updates From Version 0.865 -> 0.880            =±==
  15.       ==±============================================================±==
  16.       ==±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±==
  17.       ==================================================================
  18.  
  19.  
  20. = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  21.  
  22.  
  23.                  Version 0.880 Detailed Update Notes & Examples
  24.                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  25.  
  26.                                    INDEX
  27.                                    =====
  28.  
  29.  
  30.     [1]    Update Brief
  31.     [1.1]     Update Information
  32.     [1.2]     Update List & Notes
  33.  
  34.     [2]    Title.Txt
  35.     [2.1]     Title.Txt/RankScale=
  36.     [2.2]     Title.Txt/TimeScale=
  37.  
  38.     [3]    Language
  39.     [3.1]     Language/Conditions
  40.     [3.2]     Language/Actions
  41.     [3.3]     Language/Other Changes
  42.     [3.4]     Language/Examples
  43.  
  44.     [4]    Next version...
  45.  
  46. = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  47. =                              B r i e f i n g                                =
  48. = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  49.  
  50.                        Version 0.880 updates in Brief
  51.                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  52.  
  53. [1] Update Brief
  54.  
  55.     Version 0.8.80 of AMan has seen some fiddly changes. Not a great
  56.     deal happened in this version; most of it is the result of some
  57.     severe play testing of an adventure called 'Valley'. The only
  58.     bug I am currently aware occured under KickStart 2.0, and was a
  59.     guru 81000005 (Corrupted memory list). This I am tracing as fast
  60.     as my bony fingers will type!
  61.  
  62.     The next couple of versions will see some MAJOR jiggling to suit
  63.     my adventure, and to increase the multi-user interactive power!
  64.  
  65. [1.1] Update Information
  66.  
  67. * Daemons can now call themselves.
  68. * AMUL now understands adjectives.
  69. * Combat bugs fixed.
  70. * AMan support for external utilities now initialised...
  71. * Bug where screen titles sometimes got obliterated (WB 2.0 only) fixed.
  72. * Players can now have a pre-rank and post-rank description.
  73. * New action 'syntax' to let YOU reset NOUN1 and NOUN2, reduce code size!
  74. * Lang.Txt can now contain sub routines using the DO action.
  75. * 'Interact' action allows you to interact more freely.
  76. * FailParse/AbortParse/FinishParse bug fixed.
  77. * Treatas improved.
  78. * More speed increases!
  79. * Adjectives 100%.
  80. * It is now possible to invoke a 'remote' daemon.
  81. * AutoExits installed.
  82. * Cured the weird line-wrap problem in the invent command.
  83. * Fixed some player-movement problems.
  84. * "Follow" facilities implemented.
  85. * The "@me has arrived" and "@me has left" for players can be changed!
  86. * Random VALUES implemented!
  87. * Internal parameter editor for users!
  88. * verb <noun list> now supported, eg: get noun1,noun2,noun3,noun4,noun5!
  89. * User-definable screen length, screen width and redo-character!
  90. * Rank & Time scaling (scales value of certain objects).
  91. * Actions RESPOND and ERROR introduced to reduce Lang.Txt/Travel.Txt size.
  92. * Bug in the SYNTAX command fixed.
  93. * "-> treatas" bug fixed.
  94. * New object fixed flag, 'SMELL'.
  95. * Scenery objects with a description (eg "It is raining") are now shown when
  96.   a player views a HIDEAWAY room's description.
  97. * Blind players can now see their inventory.
  98. * Blind players can no-longer see their own inventory.
  99. * New Verb flag !!  DREAM!  Indicates players can execute this whilst asleep.
  100. * Players can no-longer execute ALL commands whilst asleep.
  101. * NEW INTERNAL USER-PARAMETER ADJUSTMENT COMMANDS! TYPE /? FOR LIST!
  102. * Daemon bugs in AMan now cured... Multiple-daemons finally work!
  103. * New variables: MYSCORE, MYSCTG and MYSTR.
  104. * ANOTHER SysMsg -- Description of a Death room in the Exits list.
  105. * Compiler now sets Scenery objects' weight as ( Top Rank Strength + 1 )
  106. * New conditions: Full <stat> <player> and Time <number>
  107. * New variables: lastroom, lastdir, lastverb.
  108. * Condition: FIRE <object> - TRUE if the object has the new 'fire' flag.
  109. * Recompiled using the Lattice 'C' -O optimisation  option, faster and
  110.   smaller code!
  111. * The SHOWFIRE feature (object flag 'fire') has been 100% installed.
  112. * If you want to open a PROPER shared serial port, AMUL now lets you.
  113. * If a player dies in a DEATH room with no DMOVE flag, objects go to the
  114.   players LAST room.
  115.  
  116. [1.2] Update List & Notes
  117.  
  118.      Conditions:
  119.  
  120.     Condition        Description
  121.     =============================================================
  122.     noun1 <noun>        TRUE if noun1 = <noun>
  123.     noun2 <noun>        TRUE if noun2 = <noun>
  124.     autoexits        TRUE if autoexits enabled
  125.     debug            TRUE if debug mode enabled
  126.     attrib <stat> <numb>    -> stat <stat> <player> <number>
  127.     full <stat> <player>    TRUE if players STAT is at maximum
  128.     time <numb>        Evalutes number of seconds till reset
  129.     inc <object>        Increments objects state - FALSE if can't
  130.     dec <object>        Decrements objects state - FLASE if can't
  131.     lit <object>        Test if the object is LIT
  132.     fire <object>        Tests for the new 'fire' flag on an object
  133.  
  134.  
  135.      Actions:
  136.  
  137.     Action            Description
  138.     =============================================================
  139.     syntax <n1> <n2>    sets noun1 & noun2
  140.     setpre x <text>        Sets a players pre-rank description
  141.     setpost x <text>    Sets a players post-rank description
  142.     setarr x <text>        Message displayed when player "arrives".
  143.     setdep x <text>        Message displayed when player leaves.
  144.     do <verb>        Do subroutine. Continue unless FAILPARSE
  145.                 executed.
  146.     interact <player>    Flags player as currently undergoing
  147.                 interaction from you. Stop ACTION and
  148.                 ANNOUNCEs getting to him from you.
  149.     senddaemon <player> <daemon> <time>
  150.                 Sends the daemon to AMan to be processed
  151.                 by another user. Set time to 0 if you
  152.                 simply want to make the remote user
  153.                 execute a command!
  154.     AutoExits On|Off    Enable/disable autoexits.
  155.     Respond <message>    Same as REPLY but also does an ENDPARSE.
  156.     Error <message>        Same as RESPOND but includes a FAILPARSE.
  157.     combat            ** fixed **
  158.     burn <object>        Sets the LIT flag of an object
  159.     douse <object>        Extinguishes the object
  160.  
  161.  
  162.      Object FIXED Flags:
  163.  
  164.     Flag            Description
  165.     =============================================================
  166.     WEAPON            Is now a STATE flag.
  167.     FIRE            Says "The <noun> is on fire." when LIT.
  168.                 also, the LIT flag is ported between
  169.                 states. Use this flag for, say, lighting
  170.                 openable objects such as doors!
  171.     SMELL            Indicates blind players ONLY see this.
  172.  
  173.  
  174.      Slot labels: (As of now called Variables)
  175.  
  176.     Label            Description
  177.     =============================================================
  178.     ~<number>        Random number between 0 and <number>
  179.     `<number>        Random number between num*.5 and num*1.5
  180.                 eg `100 could be 50 to 150.
  181.     myscore            Players score
  182.     mysctg            Points scored this game
  183.     mystr            Players strength
  184.     lastroom        Last room player was in
  185.     lastdir            Last travel verb player used (direction)
  186.     lastverb        Last verb the player used
  187.  
  188.  
  189.      System Messages:
  190.  
  191.     Number            Usage & Example
  192.     =============================================================
  193.     $71            When a Death room is listed by Exits
  194.             eg    Certain death!
  195.  
  196.      Escape Codes:
  197.  
  198.     Code            Description
  199.     =============================================================
  200.     @fm            The player following me
  201.     @mf            The player I am following
  202.  
  203.  
  204.      The following files will require attention:
  205.  
  206.     File            Reason(s)
  207.     =============================================================
  208.     Title.Txt        Add RankScale= and TimeScale= entries.
  209.     Lang.Txt        You can now remove those HORRIBLE
  210.                 chunks of code where you have a
  211.                 dozen syntax=verb noun=x noun=y
  212.                 where you are processing the
  213.                 commands for each are a single
  214.                 line... You can now check for
  215.                 noun1 and noun2, so code can change
  216.                 dramatically!
  217.                 You can now change the syntax of
  218.                 the users input. This means you
  219.                 can scrap those long portions of
  220.                 code where you repeat the same
  221.                 process for 'verb noun player' as
  222.                 you do for 'verb player noun'.
  223.                 You can now have 'subroutines'.
  224.                 Size can be DRASTICALLY reduced by
  225.                 replacing lots of <condition> reply <text>
  226.                 followed by & endparse with RESPOND and/or
  227.                 ERROR. See below.
  228.                 Replace ATTRIB with STAT command.
  229.     Objects.Txt        Your "adj=" statements now have a
  230.                 purpose in life! The AMUL parser will
  231.                 now understand these, though they are
  232.                 optional.
  233.  
  234.  
  235.     Bug Fixes, Changes and Cures
  236.     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  237.  
  238.     o Daemons can now call themselves. Verbs can also reparse themselves
  239.      using a command, such as: - treatas exampleverb
  240.  
  241.     o Under KickStart 2.0 AMUL would regularily lose the screen title
  242.      when displaying objects. This has been cured.
  243.  
  244.     o AMUL now understands adjectives!!!! If the player types:
  245.  
  246.         > get match
  247.     or    > get safety match
  248.  
  249.       He will pick up the nearest match with adj=safety. If there are
  250.      several matches around, and the player specifies <adj> <noun> he
  251.      will get the one specified; ie it will ONLY match "safety match"
  252.      with itself, so "unlit match" wouldn't work.
  253.  
  254.     o Players can now have pre- and post- -rank descriptions, eg:
  255.             "Fritter the witch"
  256.       with 'despicable' as pre-rank description becomes:
  257.         "Fritter the despicable witch is here."
  258.       and
  259.             "Robert the Lord"
  260.       with post-description 'of Nottingham' as post-description is:
  261.             "Robert the Lord of Nottingham".
  262.       Players can have BOTH a pre- and post- description.
  263.  
  264.     o Players arrival & departure strings can now be changed dynamically,
  265.      changing the way they appear to move around in the game. For
  266.      instance, a drunken player would stagger off rather than just
  267.      leave. So:
  268.         reply "The world spins round!"
  269.         setdep "Staggering wildly, @me has just left."
  270.         setarr "With some difficulty, @me has just arrived."
  271.      When player 'Fritter' leaves a room:
  272.         Staggering wildly, Fritter has just left.
  273.  
  274.     o When displaying your inventory, if your inventory was more than a
  275.      line long, the word wrap didn't work until the 10th character on
  276.      the second line. This has been cured, and the inventory is now
  277.      displayed far more quickly.
  278.  
  279.     o The following:
  280.         ---Cut---
  281.         * north
  282.         Large room.
  283.         You have just entered the large room.
  284.         Bill the novice is here, carrying book.
  285.         *
  286.         Bill the novice has just arrived.
  287.         ---End---
  288.       would happen when two players moved from room to room at the same
  289.       time. Players are now marked as 'in transit' and don't appear on
  290.       the description until they have actually finished arriving. 8-)
  291.  
  292.     o Prefixing a value in Lang.Txt, Mobiles.Txt or Travel.Txt with a
  293.      tilde (~) or backtick (`) will result in the value being randomised
  294.      at run time, each time it is used. ~<number> means A VALUE BETWEEN
  295.      0 AND NUMBER. `<number> means A VALUE BASED ON NUMBER. Effectively,
  296.      `<number> is ( ~<number> ) + <number>/2. So, `100 is (~100)+50.
  297.  
  298.     o Two new options in Title.Txt:
  299.         RankScale=X TimeScale=Y
  300.       eg    RankScale=40 TimeScale=60
  301.  
  302.       Scaling affects the value of an object depending on how long since
  303.      last reset and how high the players rank.
  304.  
  305.       RankScale is the DEDUCTION IN VALUE of objects for TOP RANK players,
  306.      with the value INCREASING for each subsequent lower rank.
  307.       TimeScale is a little more complex. It is based on the amount of
  308.      gametime used. For the last 10% of the game objects are worth their
  309.      full value to Rank 1 players. The value specified here is the INITIAL
  310.      scaling factor. For example. Using the above TimeScale value (60),
  311.      to a Rank 1 player in the first minute of the game, an object with
  312.      Value=100 would be worth ( 100 - 60 % ) = 40 points. After 50
  313.      minutes it would be worth ( 100 - 30 % ) = 70 points. After 100
  314.      minutes the object would be worth its full value (100 points).
  315.  
  316.       Here is an example of Rank and Time scaling effects...
  317.  
  318.            GameTime = 110, Ranks = 5, RankScale = 40, TimeScale = 100
  319.  
  320.               Rank Scale                Time Scale
  321.         Rank    Deduct %         Time      Deduct %
  322.         -------+-------             --------+---------
  323.           0    |    0%                0    |    100%
  324.                   1    |    8%                     25    |     75%
  325.                   2    |   16%                     50    |     50%
  326.                   3    |   24%                     75    |     25%
  327.                   4    |   32%                    100    |      0%
  328.                   5    |   40%                    110    |      0%
  329.  
  330.     o Knock a fifth out of lang.txt!
  331.  
  332.       Two new commands, RESPOND and ERROR replace the need for code
  333.      such as:
  334.  
  335.         if infl me blind reply "You can't see a thing!"
  336.         & endparse
  337.  
  338.       Instead you would now use:
  339.  
  340.         if infl me blind respond "You can't see a thing!"
  341.  
  342.       Respond and Error work in EXACTLY the same way as REPLY or MESSAGE
  343.       but they both execute an ENDPARSE and Error executes an additional
  344.       FAILPARSE. Make sure you make use of these, as they can MASSIVELY
  345.       reduce compile times, parser speed and disk usage!
  346.  
  347.     o A bug where "-> treatas <verb>" would not process has been
  348.      cured. What happened was that the 'endparse' part of ->, &> or
  349.      else> would be processed before the new verb was reached. However,
  350.      you should not NEED to tell AMUL to execute an EndParse following
  351.      a treatas command, since the parseing restarts at a different point
  352.      after its execution!
  353.  
  354.     o Some work has been done on blind players.
  355.       (a) They can no-longer see room descriptions.
  356.       (b) They can now see their own inventories.
  357.       (c) New objects flag 'SMELL' provided to allow blind players
  358.           to know ROUGHLY where they are.
  359.       ONLY a blind player can see a SMELL object, and they should
  360.       usually be made into a scenery object.
  361.  
  362.     o In a HideAway room, SCENERY objects are now displayed (eg rain
  363.      or some form of weather).
  364.  
  365.     o There is a new VERB flag "DREAM". Any verbs not marked with this
  366.      flag cannot be executed by a player who is asleep. It is recommended
  367.      that you make verbs WHO, QUIT, SCORE, SAVE and WAKE "DREAM" verbs.
  368.      Any others should be left to the system, the response being:
  369.         "You can't do anything until you wake up!"
  370.  
  371.     o Attrib has been replaced with STAT, the following changes would be
  372.      required:
  373.         attrib score <50
  374.      to:
  375.         stat score me <50
  376.  
  377.     o The compiler now AUTOMATICALLY sets the weight of a Scenery object
  378.      to the maximum strength of a top-rank player + 1. This means you
  379.      could have an entry such as:
  380.         verb=move
  381.         syntax=verb noun
  382.             noun1 bookcase    treatas open
  383.             noun1 slab    treatas open
  384.             stat str me <^noun respond "Its too heavy for you to move."
  385.             else respond "Nothing special happens, sigh."
  386.        "<^noun" means LESS THAN THE WEIGHT OF THE NOUN, so the
  387.         stat str me <^noun
  388.        means: If the player's strength is less than the weight of the
  389.               object...
  390.  
  391.     o To run AMUL with Paragon BBS Software or other such systems, you
  392.      will need a shared 'getty' serial device. This works in the same
  393.      way as World Empire in that it simply takes the settings from the
  394.      'parent' program.
  395.  
  396.       To do it from AMUL, use the -S option, as per usual, but the
  397.      format is SLIGHTLY different:
  398.  
  399.         amul -s 0 <device name> <unit>
  400.  
  401.       Unfortunately with Paragon the first character entered by the
  402.      user is lost... When I figure that one out, I'll cure it 8-).
  403.  
  404.     o When a player walks into a DEATH room which has no DMOVE flag,
  405.      AMUL would originally drop the players objects into the Death room.
  406.      It now returns the objects to the room the player LEFT from.
  407.  
  408. -------------------------------------------------------------------------------
  409. -------------------------------------------------------------------------------
  410.  
  411.  
  412. = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  413.                                    D e t a i l
  414. = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  415.  
  416.  
  417. -------------------------------------------------------------------------------
  418. -------------------------------------------------------------------------------
  419.  
  420.  
  421. [3]  Language
  422.  
  423. [3.1] Conditions
  424.  
  425.         Condition: noun1 <noun>
  426.                noun2 <noun>
  427.  
  428.     TRUE if noun1/noun2 is set to <noun>. Use this when you want to
  429.     trap a single noun part way through a complex syntax statement
  430.     where the resulting code is only a single line, thus:
  431.         verb=light
  432.         syntax=verb noun=brand noun
  433.             - checknear noun2
  434.             - checknear noun1
  435.             if noun2 is wand then skip 2
  436.             if ! flamable noun2 then reply "You can't use the @n2 to light it!"
  437.             & endparse
  438.             < etc >
  439.     is FAR less messy than the old AMUL's would have required!
  440.  
  441.  
  442.  
  443.  
  444. [3.2] Actions
  445.  
  446.         Action: syntax <noun1> <noun2>
  447.  
  448.     Sets the values for noun1 and noun2. Please note... You MUST
  449.     specify a valid noun. Either NONE, NOUN1, NOUN2 or an actual
  450.     noun name. PLAYER, TEXT or VERB cannot be specified. Using
  451.     NOUN1 or NOUN2 will also transfer the correct word type.
  452.     eg:    verb=shoot
  453.         syntax=verb player noun
  454.             if noun2 is crossbow then syntax noun1 none
  455.             & skip 100    ; Skips to next block...
  456.             -> reply "You can't use THAT to shoot at someone, imbercile!"
  457.         syntax=verb player
  458.             ! carrying crossbow then .....
  459.     The parser DOES process the "verb player" section IF you specify
  460.     crossbow are your weapon.
  461.  
  462.  
  463.         Action: setpre <player> <text>
  464.  
  465.     Sets the players pre-rank description. This allows you to
  466.     call players silly things.
  467.     eg:    setpre me "dragonfly-slaying"
  468.             (player becomes '@me the dragonfly-slaying @nr')
  469.     The pre-rank description can be display with the escape code "@d1"
  470.  
  471.  
  472.         Action: setpost <player> <text>
  473.  
  474.     Sets the players post-rank description. This allows you to
  475.     call players silly thinkgs.
  476.     eg:    setpost me "without a clue"
  477.         (player becomes '@me the @mr without a clue')
  478.     The pre-rank description can be display with the escape code "@d2"
  479.  
  480.  
  481.         Action: setarr <player> <text>
  482.  
  483.     Sets the string sent to OTHERS when the player arrives in a room.
  484.     eg:    setarr player "@me has just arrived, reeking of garlic!"
  485.  
  486.  
  487.         Action: setdep <player> <text>
  488.  
  489.     Sets the string sent to OTHERS when the player leaves a room.
  490.     eg:    setdep me "With an obvious limp, @me has just left."
  491.  
  492.  
  493.         Action: respond <text>
  494.  
  495.     Sends the message to the player and then executes an ENDPARSE.
  496.     eg:    if infl me blind respond "You can't see a thing."
  497.     replaces:
  498.         if infl me blind reply "You can't see a thing."
  499.         & endparse
  500.  
  501.     NOTE: If you had something like:
  502.  
  503.         if infl me blind reply "You can't see a thing."
  504.         else reply "OK, you flick the light switch."
  505.         & action others "You hear a 'CLIK!' as someone flicks a light switch!"
  506.         &> state lights 0
  507.  
  508.           You should use RESPOND (or ERROR) here and remove the conditions
  509.           infront of the rest of the lines. This will improve response
  510.           of the game online.
  511.  
  512.  
  513.         Action: error <text>
  514.  
  515.     Sends the message to the player and then executes an FAILPARSE.
  516.     eg:    if !nearto player error "I can't see @n1 here!"
  517.     replaces:
  518.         if !nearto player reply "I can't see @n1 here!"
  519.         & failparse
  520.  
  521.     NOTE: See the notes for RESPOND.
  522.  
  523.  
  524. [3.3] Other Changes
  525.  
  526.     Bug Fixes and Cures
  527.     ~~~~~~~~~~~~~~~~~~~
  528.  
  529.     #1    A minor bug has been cured... Richard's fabled '.combat'
  530.         daemon was a no-goer. [That'll teach you to doccument
  531.         things you haven't tested, Mr Pike!]. The reason was
  532.         simple to cure - but neither of us spotted it till I
  533.         tried some of Richards stuff... The daemon was:
  534.  
  535.         verb=.combat
  536.         syntax=verb any
  537.             - combat
  538.             - start .combat 5
  539.  
  540.         This did NOT work, for the simple reason that you 
  541.         couldn't call a verb/daemon from itself. Until the
  542.         end of the verb was reached, the verb wasn't actually
  543.         added to the compile table. The simple cure was to
  544.         add a check for the verb held in the work-space. This
  545.         HAS cured it. So you CAN now do the above. As for the
  546.         combat routines; well they still need a bitta fixing.
  547.  
  548.  
  549. [3.4] Examples
  550.  
  551. [3.4.1] Using pre- and post- rank descriptions.
  552.  
  553.     verb=set_name
  554.     syntax=verb player text
  555.         toprank setpre player text
  556.         & endparse
  557.         myrank <3 reply $38    ; only rank 3 or above can do it.
  558.         & endparse
  559.         setpre player text
  560.  
  561. [3.4.2] Streamlining a game with RESPOND and ERROR.
  562.  
  563.     Two more commands have been added in the struggle to reduce size,
  564.     compile time and processing time of games as they get bigger and
  565.     bigger! The most common sequence of commands in AMUL games seems
  566.     to be relating to telling players about their mistakes, stupidity
  567.     or otherwise reporting back. The bulk of games actually do very
  568.     little, but since 'text' is the only way the player can sense his
  569.     environment it is essential that there is plenty, but not too
  570.     much, of it.
  571.  
  572.     THE most common sequence is generally:
  573.  
  574.         <condition> reply <text>
  575.         & endparse
  576.     or
  577.         <condition> reply <text>
  578.         & failparse.
  579.  
  580.     It should be noted here that FAILPARSE SHOULD be used by budding
  581.     games developers. When mobiles and object-classes are installed
  582.     they will tell the game when to stop trying to do recursive parses,
  583.     for example:
  584.  
  585.         > PUT ALL IN BAG
  586.  
  587.     Although you can't actually do this yet, what the game WILL do is
  588.     search for all the objects which match the top element of 'put's
  589.     ?CHAE string and attempt to execute
  590.  
  591.         > PUT <noun> IN BAG
  592.  
  593.     So if the player was carrying "BRICK, BAT, BALL" it would try
  594.     PUT BRICK IN BAG, PUT BAT IN BAG, PUT BALL IN BAG. If the bag
  595.     is closed, you don't want to tell the player three times:
  596.  
  597.         > put all in bag
  598.         brick: The bag is closed, you'll have to open it first!
  599.         bat: The bag is closed, you'll have to open it first!
  600.         ball: The bag is closed, you'll have to open it first!
  601.  
  602.     Messy, huh? So... Your code might look something like, using the
  603.     OLD commands... (This example assumes objects are open in state 0)
  604.  
  605.         ----Start----
  606.         verb=put
  607.         syntax=verb noun noun
  608.             checknear noun2
  609.             checknear noun1
  610.             ! container noun2 reply "You can't put anything in the @n2!"
  611.             & failparse
  612.             ! canfit noun1 in noun2 then reply "There isn't enough room in the @n2."
  613.             & endparse
  614.             ! opens noun2 skip 2
  615.             ! state noun2 0 reply "The @n2 is closed, you'll have to open it first!"
  616.             & failparse
  617.             reply "The @n1 fits nicely into the @n2."
  618.             put noun1 into noun2
  619.         -----End-----
  620.  
  621.     Note. When there is not enough room an ENDPARSE is used. The next
  622.     object may be smaller and thus may fit inside <noun2>. In the
  623.     other two occasions it is obvious that there is no point to try
  624.     a second object. However, using the new ERROR and RESPOND commands
  625.     the code would be reduced to:
  626.  
  627.         ----Start----
  628.         verb=put
  629.         syntax=verb noun noun
  630.             checknear noun2
  631.             checknear noun1
  632.             ! container noun2 error "You can't put anything in the @n2!"
  633.             ! canfit noun1 in noun2 then respond "There isn't enough room in the @n2."
  634.             ! opens noun2 skip 2
  635.             ! state noun2 0 error "The @n2 is closed, you'll have to open it first!"
  636.             reply "The @n1 fits nicely into the @n2."
  637.             put noun1 into noun2
  638.         -----End-----
  639.  
  640.     Neat, huh?
  641.  
  642. [3.4.3] Using full...
  643.  
  644.     Goal: To award a user with 1 point of stamina after every 5 seconds
  645.           of sleep.
  646.  
  647.     Explanation:
  648.     After a fight, either one player will be dead, or there will be two
  649.     living players on reduced stamina. These two will be prone to attack
  650.     from other players (and later on mobiles). There needs to be some
  651.     way for players to recover their stamina.
  652.  
  653.     The natural thing to do is to sleep. If you decide to implement this
  654.     into your own games, you may wish to vary the ratio depending on the
  655.     style of game. In this example we use a 1 stam/5 second ratio. Don't
  656.     use a daemon which operates every second or so; this will consume
  657.     massive quantities of processor time! 8-(
  658.  
  659.     ----Start----
  660.     verb=.recsleep
  661.     syntax=verb any
  662.         ! infl me sleep endparse    ; ABORT ! ABORT ! ABORT !
  663.         ! full stam me add 1 stam me    ; Add one stamina point
  664.         ! full stam me start .recsleep 5
  665.         & endparse
  666.         reply "You are too alert to sleep any more!"
  667.         reply "Your stamina is now @st."
  668.         cure me sleep
  669.         action others "@me has woken up."
  670.         respond "You are now awake."
  671.  
  672.     verb=sleep
  673.     syntax=verb player=me
  674.         syntax none none        ; Reprocess this line
  675.     syntax=verb none
  676.         infl me sleep respond "You already ARE asleep!"
  677.         active .recsleep cancel .recsleep
  678.         inflict me sleep
  679.         start .recsleep 5
  680.         light action others "@me has just fallen asleep."
  681.         reply "You are now asleep."
  682.     -----End-----
  683.  
  684. -------------------------------------------------------------------------------
  685. -------------------------------------------------------------------------------
  686.  
  687.  
  688. [4]  Next Version...
  689.  
  690. [4.1] Conditions
  691.  
  692.     The following conditions will, hopefully, be added by version 0.9
  693.  
  694.     #1    lastplayer    Checks the last player mentioned
  695.     #2    equates        Allow you to perform simple maths/logic.
  696.  
  697.  
  698. [4.2] Actions
  699.  
  700.     The following actions will, hopefully, be added by version 0.9
  701.  
  702.     #1    getfrom
  703.     #2    putin
  704.  
  705.     The following actions are planned for the future:
  706.  
  707.     #1    A means of 'where'ing a player.
  708.     #2    Ability to list another players inventory.
  709.     #3    "Snoop" feature. This will allow one player to see the
  710.         inputs of another. Useful for debugging, since you can
  711.         monitor what players do. It also allows top-ranked
  712.         players (Wizards) to take a hand in inducting novices,
  713.         since they can tell what the novice is TRYING to do.
  714.  
  715.  
  716. [4.3] General features and alterations.
  717.  
  718.     #1    MORE speed (PLEASE)
  719.     #2    Smaller output (data files)
  720.     #3    Seperate Daemon parser, to allow indi daemons.
  721.     #4    Mobiles (soon - I hope)
  722.     #5    "All" as a noun...
  723.     #6    Object classes... (That should be fun, hey Rich?)
  724.     #7    Parser will be able to cope with 
  725.             > Plant the plant in the plant pot.
  726.     #8    Containers will be fully operative.
  727.  
  728.  
  729. [4.4] Finalle...
  730.  
  731.     There are ALL sorts of changes heading AMUL's way in the near
  732.     future... I am currently talking, indirectly, with the 4D BBS
  733.     author(s?) (thanks Kulvinder), and am hoping to make AMUL 4D
  734.     compatible... From what I gather Jon is too busy playing Gem
  735.     Stones to fix the bugs in 2.10a7...
  736.  
  737.     One of the main changes coming to AMUL will be two new escape
  738.     codes: @xx and @xy. These two codes are used in multi-user
  739.     interaction. @xx by default gives the players name, @xy will
  740.     give "@me the @mr". But these are ONLY to players who can see
  741.     your player! The table of outputs is something like:
  742.  
  743.     (* indicates if YOUR player is top rank)
  744.  
  745.                                  A c t i o n
  746.  
  747.     when            @xx            @xy
  748.     --------------------------------------------------------------------
  749.     Can See Me        @me            @me the @mr
  750.     SameRoom, Can't see me    Someone nearby        Someone
  751. *    " " " " " " " " " " "     Someone very powerful    Someone very powerful
  752.     DiffRoom, Can't see me    Someone            Someone
  753.  
  754.                                A n n o u n c e
  755.  
  756.     when            @xx            @xy
  757.     --------------------------------------------------------------------
  758.     Can See me        @me            @me the @mr
  759.     SameRoom, Can't see me    A @gn voice nearby    A @gn voice nearby
  760. *    " " " " " " " " " " "   " " " " " " " " "     Nearby, someone very powerful
  761.     Diffroom, Can't see me    In the distance an @gn voice    (<-ditto)
  762.  
  763.     With these features at your command, you should REALLY be able to
  764.     tidy up those multi-user bits, and get a REAL game up and running!
  765.  
  766.     These will be the bulk of the differences between 0.89 and 0.9,
  767.     the NEXT release version!
  768.     
  769.     Right... Enough waffle... GET ADVENTURING!
  770.  
  771. -------------------------------------------------------------------------------
  772. -------------------------------------------------------------------------------
  773.